{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "38578b61",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# GPT基础"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b104f191",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## GPT介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3fb60f4f",
   "metadata": {
    "hidden": true
   },
   "source": [
    "ChatGPT是基于GPT（**Generative Pre-trained Transformer**）的聊天型AI模型，由OpenAI团队开发。它的核心是GPT模型，这是一种基于Transformer的神经网络模型，能够对文本进行自动编码和生成。\n",
    "\n",
    "ChatGPT是一种人工智能技术，它被训练来进行自然语言理解和生成。简单来说，它是一种能够进行智能对话的计算机程序。它使用的是一种叫做GPT的算法，这种算法可以根据已有的数据来生成新的语言信息，就像我们人类学习语言一样。\n",
    "\n",
    "使用ChatGPT，你可以像和一个人一样进行对话，它可以回答你的问题、提供建议、给你意见等等。这项技术的应用非常广泛，可以用于聊天机器人、虚拟助手、客户服务等等领域。\n",
    "\n",
    "ChatGPT背后的技术很复杂，但是它的基本原理还是比较容易理解的。它的核心是一个深度学习模型，这个模型会被训练来理解人类语言，同时也可以生成类似人类的回复。为了训练这个模型，我们需要大量的文本数据，这些数据被称为“语料库”。\n",
    "\n",
    "在训练模型的过程中，模型会学习到不同单词和短语之间的关系，以及如何将它们组合成有意义的句子。当你与ChatGPT进行对话时，它会根据你的输入来生成回复，这个回复会基于它在训练时学习到的知识和规律。因此，ChatGPT的回答可能并不总是完美的，但是它可以不断地从错误中学习，逐渐提高自己的表现。\n",
    "\n",
    "总之，ChatGPT是一种非常有趣和实用的技术，它可以让计算机像人类一样进行对话，并且可以用于很多不同的领域。虽然它背后的技术很复杂，但是它的应用却是非常容易理解的。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "293d4f0a",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## 技术背景"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0e17ad91",
   "metadata": {
    "hidden": true
   },
   "source": [
    "1. GPT-4架构：GPT-4是OpenAI的一种大型预训练语言模型，是GPT系列的第四代。GPT-4在大量文本数据上进行训练，使其具有强大的理解和生成语言的能力。GPT-4架构基于自注意力和Transformer结构，有效处理长距离依赖和复杂语义关系。\n",
    "2. Transformer：Transformer是一种深度学习模型，基于自注意力机制，可以并行处理输入序列中的所有单词。相较于传统的循环神经网络（RNN）和长短时记忆网络（LSTM），Transformer具有更高的计算效率和表现力。\n",
    "3. 自注意力：自注意力机制是Transformer的核心组件，它可以识别输入序列中各个单词之间的关系。自注意力通过为每个单词分配权重来计算上下文相关的表示，使模型能够捕捉长距离依赖和复杂语义关系。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7876d54",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## GFT模型发展"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "57478e89",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/GPT模型发展.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6d3a285",
   "metadata": {
    "hidden": true
   },
   "source": [
    "1. NNLM:传统的神经网络语言模型\n",
    "2. Word2Vec:基于词向量的机器学习，**GPT有使用到该技术** ([词向量是什么？](https://mp.weixin.qq.com/s?__biz=MzA3MjkzMjYxNQ==&mid=2457824963&idx=1&sn=0d53debd0eecbdaf2110cb9d52337ef0&chksm=889d02abbfea8bbd21d3c35f53384e5b84ecd6df83951237a4d7c2d60048a22e8917d9738fbe&scene=27))\n",
    "3. ELMo:用于生成动态词向量的预训练语言模型\n",
    "4. Transformer:一种新兴的语言模型架构，是BERT的前身，**GPT有使用到该技术** (（[Transformer是什么？](https://zhuanlan.zhihu.com/p/338817680)）\n",
    "5. BERT:现在使用最广泛的语言模型之一，实现Transformer的Encoder\n",
    "6. T5:基于BERT多出Decoder模型，可基于T5完成多任务小样本同时训练\n",
    "7. GPT： GPT家族模型([预训练语言模型之GPT-1，GPT-2和GPT-3](https://zhuanlan.zhihu.com/p/350017443))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0519044",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## 路径技术介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07292163",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/GPT时间线.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "18ceca0f",
   "metadata": {
    "hidden": true
   },
   "source": [
    "- **Transformer**： 的核心是在数学上计算输入元素之间的关联（Attention），基于自我注意力机制来并行计算，实现自我监督学习。通过这种模式成功的消除了训练数据集的标注需求！模型包括三个主要部分：输入层、中间层和输出层。通常，输入层会对输入序列进行编码，中间层通过注意力机制来组合信息，而输出层则根据组合后的信息生成预测结果。\n",
    "- **GPT-1**：参数量达1亿，是一种语言模型，由OpenAI训练，用于预测下一个单词，使其能够生成自然语言文本。它是基于Transformer模型，拥有大量训练数据和计算能力，能够生成高质量的文本。算得上一个还算不错的语言理解工具而非对话式AI。\n",
    "- **GPT-2**：参数量达15亿，学习目标则使用无监督预训练模型做有监督任务。在性能方面，除了理解能力外，GPT-2在生成方面第一次表现出了强大的天赋：阅读摘要、聊天、续写、编故事，甚至生成假新闻、钓鱼邮件或在网上进行角色扮演通通不在话下。\n",
    "- **GPT-3**：参数量达1750亿，作为一个无监督模型（自监督模型），几乎可以完成自然语言处理的绝大部分任务，例如面向问题的搜索、阅读理解、语义推断、机器翻译、文章生成和自动问答等等。一个无监督模型功能多效果好，似乎让人们看到了通用人工智能的希望。\n",
    "- **InstructGPT**：是一个更真实、更无害，更好地遵循用户意图的语言模型，经过微调的新版本GPT-3，可以将不真实的、有害的和有偏差的输出最小化。\n",
    "- **ChatGPT**：每走一步，都会观察人类的反馈，重点是能更好的分析人类的意图。\n",
    "- **GPT-4**：是OpenAI团队在2023年推出的一个大型多模态模型（Large Multimodal Model），能够接受图像和文本输入，并输出文本。实验表明，GPT-4 在各种专业和学术考试中表现出了与人类水平相当的性能（human-level performance）。例如，它通过了模拟律师考试，且分数在应试者的前 10% 左右；相比之下，GPT-3.5 的得分在倒数 10% 左右。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af9b643b",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## 训练过程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb59508b",
   "metadata": {
    "hidden": true
   },
   "source": [
    "ChatGPT和传统BERT的训练方式一致。大致分为两个阶段：预训练和微调。\n",
    "1. 预训练：在预训练阶段，模型在大量的文本数据上进行无监督学习。这些数据包括网页、书籍、文章等，来源广泛且多样。模型通过学习这些数据，掌握语言的结构和语义知识。\n",
    "2. 微调：在微调阶段，模型使用有标签的数据进行监督学习。这些数据包括对话、问题回答等，帮助模型更好地适应特定任务和场景。微调使模型能够更准确地理解和生成目标领域的语言。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "74a9722b",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## 应用场景"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d11d8ec0",
   "metadata": {
    "hidden": true
   },
   "source": [
    "ChatGPT可使用的**基础场景**如下\n",
    "1. 问题回答：为用户提供准确的问题解答，涵盖广泛的领域。\n",
    "2. 文本生成：帮助用户撰写文章、邮件、社交媒体等各种文本内容。\n",
    "3. 情感分析：根据用户输入的文本，分析其中的情感倾向，如积极、消极等。\n",
    "4. 摘要生成：为长篇文章生成简洁的摘要，帮助用户快速了解关键信息。\n",
    "5. 机器翻译：将一种语言的文本翻译成另一种语言，支持多种语言之间的翻译。\n",
    "6. 代码生成：根据用户的需求自动生成代码，支持多种编程语言。\n",
    "7. 教育辅导：为学生提供学术帮助，解答各种课题问题。\n",
    "8. 客户支持：为用户提供实时的在线客户服务，解决各种问题。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0add3dd1",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "# Prompt工程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8caf1aee",
   "metadata": {
    "hidden": true
   },
   "source": [
    "得益于ChatGPT的强大能力，我们可以让它帮我们干任何事情。这里就涉及到我们应该将我们的需求转化为GPT可以理解的问题。这里就涉及到Promt工程"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fcd2f09d",
   "metadata": {
    "hidden": true
   },
   "source": [
    "## 什么是Prompt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "510f2168",
   "metadata": {
    "hidden": true
   },
   "source": [
    "prompt，简单的理解它是**AI 模型的指令**。</br>\n",
    "任何你希望解决的问题通过文字形式表达出来，作为Prompt传递给AI模型（在ChatGPT等GPT产品中目前是文字形式，未来可能有图像，语音，视频等多形式），AI 模型会基于 prompt 所提供的信息，生成对应的文本、图片甚至视频等信息。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5143e578",
   "metadata": {
    "heading_collapsed": true,
    "hidden": true
   },
   "source": [
    "## 什么是Prompt Engineering？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4c043c6e",
   "metadata": {
    "hidden": true
   },
   "source": [
    "首先我们直接问ChatGPT： **什么是Prompt Engineering？**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60069539",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/prompt1.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3a128ac",
   "metadata": {
    "hidden": true
   },
   "source": [
    "看起来非常的专业，但输出一堆常人看不懂的文字。</br>\n",
    "此时我们修改提问方式：**请用通俗的语言介绍Prompt engineering，语言风格尽可能的简单形象，多用比喻，举例子等形式**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1582ffae",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/prompt2.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f97e983",
   "metadata": {
    "hidden": true
   },
   "source": [
    "通过上面的提问方式，看上去确实简单了不少，而且跟你更容易被人看得明白。</br>\n",
    "而这种换一个提问的方式就是ChatGPT使用中经常提到的**Prompt engineering**</br>\n",
    "此时，我们再提升我们的Prompt，把问题改为：**你现在是一名教师，面向没有技术基础的人群，开展ChatGPT等GPT产品的Prompt使用课程，请用通俗的语言介绍Prompt engineering的概念，价值与局限性，语言风格尽可能的简单形象，多用比喻，举例子等形式**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed28b66d",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/prompt3.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b0f25d1",
   "metadata": {
    "hidden": true
   },
   "source": [
    "可以看到生成了更精准的一些信息，比喻也很恰当，而这种Prompt的方式就是ChatGPT使用中最常用的**角色扮演**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b66d81d3",
   "metadata": {
    "hidden": true
   },
   "source": [
    "## Prompt 总结"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1444fab7",
   "metadata": {
    "hidden": true
   },
   "source": [
    "Prompt engineering是指通过对GPT模型输入的Prompt进行精心设计和调整，来控制模型的生成输出结果。一般包含如下几个方面：\n",
    "1. **设计合适的Prompt**：Prompt是指输入给GPT模型的一段文本，可以是问题、提示、描述等。设计合适的Prompt可以让模型更准确地生成想要的结果。\n",
    "2. **调整Prompt的长度和内容**：Prompt的长度和内容会直接影响模型的生成结果。通过调整Prompt的长度和内容，可以控制模型的输出结果。\n",
    "3. **引导模型生成特定内容**：通过设计Prompt的方式，可以引导模型生成特定的内容，例如回答问题、描述某个主题等。\n",
    "4. **调整模型参数**：Prompt engineering还包括对模型参数的调整，以使模型更适合特定的应用场景。\n",
    "Prompt engineering就像教你成为一位AI模型的指挥家，指挥家要用手中的指挥棒来指挥乐团演奏一首曲子，调整指挥棒的力度和方向，控制乐曲的音乐风格和氛围。而Prompt engineering要指挥Prompt的内容和长度，来指导GPT模型生成特定的内容，控制风格和表达。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ce7f5bb",
   "metadata": {},
   "source": [
    "# ChatGPT的基本用法"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b996af5",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 使用要点"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "af16f68e",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 提示词"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "59122a50",
   "metadata": {
    "hidden": true
   },
   "source": [
    "1）清晰\n",
    "清晰的提示词能让 ChatGPT 更准确地理解用户的问题和需求，从而提供更精确的答案和建议。模糊或含糊不清的提示词可能导致AI理解错误或给出不相关的回答。\n",
    "\n",
    "2）聚焦\n",
    "聚焦的提示词有助于ChatGPT快速定位用户的需求，从而提供更具针对性的回答。如果提示词包含多个问题或太过宽泛，AI可能无法全面解答，或给出过于笼统的回应。\n",
    "\n",
    "3）相关\n",
    "相关的提示词能确保AI提供的信息和建议与用户的需求密切相关，提高用户满意度。不相关的提示词可能导致ChatGPT给出与用户需求无关的回答，浪费时间和资源。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d4f1ab4b",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/使用要点.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "69649805",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 持续调教"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09e2982c",
   "metadata": {
    "hidden": true
   },
   "source": [
    "ChatGPT支持多轮对话，且它会基于历史对话来消化我们的问题。所以为了更好地获得需要的答案，我们可以结合提问的原则，问它、问它、再问它。就像是与一个朋友聊天\n",
    "\n",
    "**如果ChatGPT没听清楚或者没理解我们的问题，可以再问一遍，换个说法，直到他明白我们的意思。**\n",
    "\n",
    "```\n",
    "举个例子：假设我们想问ChatGPT关于烘焙蛋糕的问题。\n",
    "第一次提问：怎么做蛋糕？\n",
    "（这个问题太宽泛，ChatGPT可能给出一个简单的回答。）\n",
    "第二次提问：怎么做戚风蛋糕？\n",
    "（这次问题更具体了，但仍可能需要更多信息。）\n",
    "第三次提问：我想在家制作戚风蛋糕，请告诉我所需的材料和步骤。\n",
    "（这个问题明确了需求，ChatGPT现在可以提供更详细的答案。）\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c54c21e5",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 角色扮演"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "832d4012",
   "metadata": {
    "hidden": true
   },
   "source": [
    "角色扮演有助于为ChatGPT提供更明确的上下文和指引，从而使其更容易理解我们的问题和需求。\n",
    "当我们以特定角色来提问时，ChatGPT会根据这个角色的知识和经验来回答问题。这有助于生成更专业、更具针对性的回答。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "04d98486",
   "metadata": {
    "hidden": true
   },
   "source": [
    "### 英文环境"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bbf8f5d",
   "metadata": {
    "hidden": true
   },
   "source": [
    "由于ChatGPT的训练数据英文内容比中文内容更加丰富，所以在英文场景下，ChatGPT通常能够更好地理解上下文和提供准确的回答。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e2dac290",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 经典工作案例"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "608da29f",
   "metadata": {
    "hidden": true
   },
   "source": [
    "这是一个实际工作中使用GPT的经典案例。\n",
    "\n",
    "我需要GPT帮我设计知识图谱中涉及只是融合的模块"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94af5bca",
   "metadata": {
    "hidden": true
   },
   "source": [
    "![模型发展](image/知识融合1.png)\n",
    "![模型发展](image/知识融合2.png)\n",
    "![模型发展](image/知识融合3.png)\n",
    "![模型发展](image/知识融合4.png)\n",
    "![模型发展](image/知识融合5.png)\n",
    "![模型发展](image/知识融合61.png)\n",
    "![模型发展](image/知识融合62.png)\n",
    "![模型发展](image/知识融合71.png)\n",
    "![模型发展](image/知识融合72.png)\n",
    "![模型发展](image/知识融合8.png)\n",
    "![模型发展](image/知识融合9.png)\n",
    "![模型发展](image/知识融合10.png)\n",
    "![模型发展](image/知识融合11.png)\n",
    "![模型发展](image/知识融合12.png)\n",
    "![模型发展](image/知识融合13.png)\n",
    "![模型发展](image/知识融合14.png)\n",
    "![模型发展](image/知识融合151.png)\n",
    "![模型发展](image/知识融合152.png)\n",
    "![模型发展](image/知识融合153.png)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9b4ca5a",
   "metadata": {
    "heading_collapsed": true
   },
   "source": [
    "## 一些基于ChatGPT的拓展"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d8f211c",
   "metadata": {
    "hidden": true
   },
   "source": [
    "**ChatGPT + PDF（ChatDOC）**</br>\n",
    "https://chatdoc.com/chatdoc/\n",
    "可以导入PDF文档，基于PDF进行有目的性地学习。对于我这种英文读起来比较慢的人，读英文材料会轻松很多。\n",
    "\n",
    "\n",
    "**ChatGPT + Excel**</br>\n",
    "可以让ChatGPT写VBA，然后嵌入到Excel中运行，感兴趣的小伙伴可以自行探索一下。\n",
    "\n",
    "**ChatGPT + 用户评价（卖货公司需要。。）**</br>\n",
    "把自己公司（消费品牌公司）的商品评价数据全部通过API接口喂进ChatGPT，然后让ChatGPT给出正负向评价打标。\n",
    "\n",
    "**ChatGPT + 私董会**</br>\n",
    "告诉ChatGPT要开一个私董会，私董会的人选有：乔布斯、马斯克等，然后把自己的问题放进去，让ChatGPT站在几个名人的角度给建议和策略。\n",
    "（来源：梨儿长大）\n",
    "\n",
    "**ChatGPT 生成思维导图**</br>\n",
    "让ChatGPT 生成某本书/某篇文档的思维导图，\n",
    "1）给chatgpt下指令说用markdown格式输出某一主题的内容\n",
    "2）内容到你满意后，复制到txt里，再把txt的扩展名该成md\n",
    "3）打开xmind，随便新建一个导图，点击文件—导入markdown格式，选择刚才保存的txt即可\n",
    "\n",
    "**ChatGPT 生成流程图**</br>\n",
    "https://mp.weixin.qq.com/s/GXXh0jOdpAIv1QDc8DM5zA\n",
    "\n",
    "喂给ChatGPT某个特定主题/大牛的资料\n",
    "需要研究某个领域的学习内容，就把相关的资料全部喂给它，然后让ChatGPT基于资料生成回答。\n",
    "\n",
    "**ChatGPT + SQL**</br>\n",
    "可以使用ChatGPT写SQL语句，优化SQL性能等。\n",
    "暂时无法在飞书文档外展示此内容\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "37537d75",
   "metadata": {
    "hidden": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
